#include <iostream>
#include <fstream>
#include "Bricks.h"

int main()
{
	ifstream file("input.txt");
    string word; // слово, которое нужно составить
    vector<string> bricks; // кубики
    Bricks bricksSolution; // класс для поиска решения

	file >> word;
	while (!file.eof())
    {
        string brick;
        file >> brick;
        if (brick.size() == 0)
        {
            break;
        }
        bricks.push_back(brick);
    }
    file.close();

	// если кубиков меньше, чем длина слова, то бессмысленно продолжать
	if (bricks.size() < word.size())
    {
		cout << "NO" << endl;
		return 0;
	}

    if (bricksSolution.run(word, bricks))
    {
        cout << "YES" << endl;
        cout << bricksSolution.getBricks() << endl;
    }
    else
    {
        cout << "NO";
    }

    return 0;
}
